package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.SocDispatchCompanyAddDTO;
import org.jsola.hr.dto.SocDispatchCompanyUpdateDTO;
import org.jsola.hr.dto.SocDispatchEmpFeedBackDTO;
import org.jsola.hr.query.SocDispatchCompanyQuery;
import org.jsola.hr.query.SocDispatchEmpAddQuery;
import org.jsola.hr.query.SocDispatchEmpLessQuery;
import org.jsola.hr.vo.*;

import java.util.List;

/**
 * 社保派单公司记录表
 *
 * @author zhr
 */
@Api(tags = "hr-社保派单公司记录表")
public interface ISocDispatchCompanyControllerAPI {

    /**
     * 新增社保派单公司记录表
     * @param socDispatchCompanyAddDTO 社保派单公司记录表新增实体
     * @return 社保派单公司记录表展示对象
     */
    @ApiOperation(value = "新增社保派单公司记录表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyAddDTO", dataType = "SocDispatchCompanyAddDTO", value = "新增社保派单公司记录表", paramType = "body")
    })
    Result<SocDispatchCompanyVO> save(SocDispatchCompanyAddDTO socDispatchCompanyAddDTO);


    /**
     * 修改社保派单公司记录表
     * @param socDispatchCompanyUpdateDTO 社保派单公司记录表
     * @return 更新数量
     */
    @ApiOperation(value = "修改社保派单公司记录表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyUpdateDTO", dataType = "SocDispatchCompanyUpdateDTO", value = "修改社保派单公司记录表", paramType = "body")
    })
    Result<Integer> update(SocDispatchCompanyUpdateDTO socDispatchCompanyUpdateDTO);




    /**
     * 删除单个社保派单公司记录表，彻底删除
     * @param socDispatchCompanyId 社保派单公司记录表id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个社保派单公司记录表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyId", dataType = "String", value = "社保派单公司记录表id", paramType = "path")
    })
    Result<Integer> delete(String socDispatchCompanyId);


    /**
     * 批量删除社保派单公司记录表，彻底删除
     * @param socDispatchCompanyIds 社保派单公司记录表id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除社保派单公司记录表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyIds", dataType = "String[]", value = "社保派单公司记录表id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] socDispatchCompanyIds);


    /**
     * 根据社保派单公司记录表id查询社保派单公司记录表详情
     * @param socDispatchCompanyId 社保派单公司记录表id
     * @return 社保派单公司记录表详情
     */
    @ApiOperation(value="根据社保派单公司记录表id查询社保派单公司记录表详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyId", dataType = "String", value = "社保派单公司记录表id", paramType = "path")
    })
    Result<SocDispatchCompanyVO> findById(String socDispatchCompanyId);


    /**
     * 查询社保派单公司记录表
     * @param socDispatchCompanyQuery 社保派单公司记录表查询参数
     * @return page
     */
    @ApiOperation(value="查询社保派单公司记录表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyQuery", dataType = "SocDispatchCompanyQuery", value = "社保派单公司记录表查询参数", paramType = "query")
    })
    Result<List<SocDispatchCompanyListVO>> listAll(SocDispatchCompanyQuery socDispatchCompanyQuery);


     /**
     * 分页查询社保派单公司记录表
     * @param socDispatchCompanyQuery 社保派单公司记录表查询参数
     * @return page
     */
    @ApiOperation(value="分页查询社保派单公司记录表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyQuery", dataType = "SocDispatchCompanyQuery", value = "社保派单公司记录表查询参数", paramType = "query")
    })
    Result<Page<SocDispatchCompanyListVO>> page(SocDispatchCompanyQuery socDispatchCompanyQuery);


    /**
     * 根据社保派单记录表id查询社保派单记录表详情及统计数据
     *
     * @param socDispatchCompanyId 社保派单记录表id
     * @return 社保派单记录表详情
     */
    @ApiOperation(value = "根据公司社保派单记录表id查询社保派单记录表详情及统计数据")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchCompanyId", dataType = "String", value = "公司社保派单记录表id", paramType = "path")
    })
    Result<SocDispatchCompanyDetailsVO> findCompanyDetailsById(String socDispatchCompanyId);

    /**
     * 分页查询社保派单员工表_增员
     *
     * @param socDispatchEmpAddQuery 社保派单员工表_增员查询参数
     * @return page
     */
    @ApiOperation(value = "分页查询公司社保派单员工信息_增员")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchEmpAddQuery", dataType = "SocDispatchEmpAddQuery", value = "社保派单员工表_增员查询参数", paramType = "query"),
            @ApiImplicitParam(name = "socDispatchCompanyId", dataType = "String", value = "公司社保派单记录表id", paramType = "path")
    })
    Result<Page<SocDispatchEmpAddListVO>> pageEmpAdd(SocDispatchEmpAddQuery socDispatchEmpAddQuery, String socDispatchCompanyId);

    /**
     * 分页查询社保派单员工表_减员
     *
     * @param socDispatchEmpLessQuery 社保派单员工表_减员查询参数
     * @return page
     */
    @ApiOperation(value = "分页查询公司社保派单员工信息_减员")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "socDispatchEmpLessQuery", dataType = "SocDispatchEmpLessQuery", value = "社保派单员工表_减员查询参数", paramType = "query"),
            @ApiImplicitParam(name = "socDispatchCompanyId", dataType = "String", value = "公司社保派单记录表id", paramType = "path")
    })
    Result<Page<SocDispatchEmpLessListVO>> pageEmpLess(SocDispatchEmpLessQuery socDispatchEmpLessQuery, String socDispatchCompanyId);

}

